package io;

import java.io.File;
import java.util.Scanner;

public class IoDemoFileSearch {

    private static Scanner scanner = new Scanner(System.in);

    // 扫描指定目录，并找到名称中包含指定字符的所有普通文件（不包含目录），
    // 并且后续询问用户是否要删除该文件
    public static void main(String[] args) {
        //用户输入一个指定搜索的目录
        System.out.println("请输入要搜索的路径：");
        String basePath = scanner.next();

        //针对用户进行简单判定
        File root = new File(basePath); //相当于是打开一个目录看看里面有什么
        if (!root.isDirectory()) {
            // 路径不存在，或者只是一个文件，此时无法进行搜索
            System.out.println("输入的路径有误！！！");
            return;
        }

        // 此时路径是存在的
        // 再让用户输入一个要删除的文件名
        System.out.println("请输入要删除的文件名：");
        String nameToDelete = scanner.next();

        // 针对指定的路径进行扫描 - 递归操作
        // 先从根目录出发 root
        // 先看看当前的目录里是否有要删除的文件，如果有就删除，如果没有就跳过找下一个
        // 如果当前这里包含一些目录，再针对子目录进行递归

        scanDir(root, nameToDelete);
    }

    /*private static void scanDir(File root, String nameToDelete) {
        System.out.println("[scanDir]" + root.getAbsolutePath());
        // 1.先列出 root 下的文件和目录
        File[] files = root.listFiles();
        if (files == null) {
            // 当前的 root 目录下没东西，是一个空的目录
            // 结束继续递归
            return;
        }

        // 2.遍历当前的列出结果
        for (File file : files) {
            if (file.isDirectory()) {
                //如果是目录就进行一步递归
                scanDir(file, nameToDelete);
            } else {
                // 如果是普通文件，就判断是否要删除
                if (file.getName().contains(nameToDelete)) {
                    System.out.println("确认是否要删除" + file.getAbsolutePath() + "嘛？");
                    String choise = scanner.next(); //选择的结果
                    if (choise.equals("y") || choise.equals("Y")) {
                        // 开始删除
                        file.delete();
                        System.out.println("删除成功！！！");
                    } else {
                        System.out.println("删除取消！！！");
                    }
                }
            }
        }
    }*/

    private static void scanDir(File root, String nameToDelete) {
        System.out.println("[scanDir]" + root.getAbsolutePath());
        // 1.先列出 root 下的文件和目录
        File[] files = root.listFiles();
        if (files == null) {
            // 当前的 root 目录下没东西，是一个空的目录
            // 结束继续递归
            return;
        }

        // 2.遍历当前的列出结果
        for (File file : files) {
            if (file.isDirectory()) {
                //如果是目录就进行一步递归
                scanDir(file, nameToDelete);
            } else {
                // 如果是普通文件，就判断是否要删除
                if (file.getName().contains(nameToDelete)) {
                    System.out.println("确认是否要删除" + file.getAbsolutePath() + "嘛？");
                    String choise = scanner.next(); //选择的结果
                    if (choise.equals("y") || choise.equals("Y")) {
                        // 开始删除
                        file.delete();
                        System.out.println("删除成功！！！");
                    } else {
                        System.out.println("删除取消！！！");
                    }
                }
            }
        }
    }
}
